package com.nineclock.system.service;


import com.nineclock.system.dto.DepartmentOrUserSimpleDTO;
import com.nineclock.system.dto.SysDepartChangeDTO;
import com.nineclock.system.dto.SysDepartmentDTO;

import java.util.List;

public interface SysDepartmentService {

    /**
     * 组织架构: PC-获取组织架构列表(左侧菜单)
     * @return
     */
    List<SysDepartmentDTO> queryDepartmentList();

    /**
     * 查询当前企业所有部门ID集合
     * @return
     */
    List<Long> queryDepartmentIds();

    /**
     * 组织架构:获取部门简单列表
     * @param id
     * @param includeMember
     * @return
     */
    List<DepartmentOrUserSimpleDTO> querySimleDepartment(Long id, Integer includeMember);

    /**
     * 根据员工id获得从低到高级别的部门ID集合
     * @param companyUserId
     * @return
     */
    List<Long> queryDepartmentsByUserId(Long companyUserId);


    //2021.12.29
    /**
     * 组织架构:添加部门
     */
    SysDepartmentDTO addDepartment(SysDepartmentDTO departmentDTO);

    /**
     * 获取部门列表
     * @return
     * @param page
     * @param pageSize
     * @param includeMember
     */
    List<SysDepartmentDTO> querySonDepartments(Integer page, Integer pageSize, Integer includeMember);

    /**
     * 修改部门成员
     * @param departmentDTO
     */
    void updateDepartmentOfMember(SysDepartChangeDTO departmentDTO);

    /**
     * 删除部门成员
     * @param ids
     */
    void deleteDepartmentMembers(Long[] ids);
}
